Creating a database, such as a relational database, can be a complicated process. To develop optimal definitions for a relational database, known methods require a significant amount of understanding of the database being used, and of the data that will populate the database. For example, a Database Administrator (DBA) may spend years becoming an expert in their field to eventually understand and follow all of the nuances that deliver the best performance for a database.
Beyond the role of a DBA, other database builders may not have an understanding of how to take advantage of their chosen product(s) and create optimal definitions for the database. Without proper definitions, such as definitions for the schema, a database may suffer from performance problems and unwanted overhead which consume, for example, central processing unit (CPU), Memory, and/or Disk Input/Output (I/O) resources. This could lead to service level agreements (SLAs) being missed due to unsatisfactory performance and outages.
Known solutions to fix relational database performance require a great deal of effort on the part of a DBA to analyze the existing schema, get additional input from the database owner, and write new Data Definition Language (DDL) statements or commands. Depending on the scope of the database, the time and money spent optimizing the database for acceptable performance may be significant.
Accordingly, there is a need for systems and methods which automate the optimization of database definitions for databases.